package com.zjdiepu.www.base.core;

import java.beans.PropertyEditorSupport;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang3.StringUtils;

import com.zjdiepu.www.common.consts.SystemConsts;

/**
 * 项目名称：dpqc-parent-manager-base <br/> 
 * 类名称：DateTypeEditor <br/>  
 * 类描述：自动匹配日期格式<br/>    
 * 创建人：xiongxiaotun <br/> 
 * 创建时间：2017年4月25日 下午3:30:32  <br/>   
 * 修改人：xiongxiaotun <br/> 
 * 修改时间：2017年4月25日 下午3:30:32   <br/>  
 * 修改备注：    <br/> 
 * @version V1.0   <br/>
 */
public class DateTypeEditor extends PropertyEditorSupport {
	/**
	 * 短类型日期长度
	 */
	public static final int MIDDLE_DATE = 16;
	
	public static final int SHORT_DATE = 10;
	
	public static final int YEAR_DATE = 4;
	
	public static final int MONTH_DATE = 7;

	public void setAsText(String text) throws IllegalArgumentException {
		text = text.trim();
		if (StringUtils.isBlank(text)) {
			setValue(null);
			return;
		}
		try {
			String dataFormat = "";
			if (text.length() <= YEAR_DATE) {
				dataFormat = SystemConsts.SYS_COMON_DF_YEAR;
			}else  if (text.length() <= MONTH_DATE) {
				dataFormat = SystemConsts.SYS_COMON_DF_MONTH;
			}else if (text.length() <= SHORT_DATE) {
				dataFormat = SystemConsts.SYS_COMON_DF_SHORT;
			}else if(text.length() <= MIDDLE_DATE){
				dataFormat = SystemConsts.SYS_COMON_DF_MIDDLE;
			} else {
				dataFormat = SystemConsts.SYS_COMON_DF_LONG;
			}
			if(StringUtils.isNotBlank(dataFormat)) {
				long time = new SimpleDateFormat(dataFormat).parse(text).getTime();
				setValue(new Date(time));
			} else {
				
			}
		} catch (ParseException ex) {
			IllegalArgumentException iae = new IllegalArgumentException(
					"Could not parse date: " + ex.getMessage());
			iae.initCause(ex);
			return;
		}
	}

	/**
	 * Format the Date as String, using the specified DateFormat.
	 */
	public String getAsText() {
		Date value = (Date) getValue();
		return (value != null ?  new SimpleDateFormat(SystemConsts.SYS_COMON_DF_LONG).format(value) : "");
	}
}
